1. Field of the Invention
Embodiments of the present invention generally relate to dispatching commands for execution by a processing engine, and more particularly to rescinding a portion of the dispatched commands before they are executed.
2. Description of the Related Art
Conventional instruction stream scheduling allocates a specific amount of time; a time slice, to each instruction stream in a multiple processing engine system during which commands from a first instruction steam are dispatched for execution. When the time slice for the first instruction stream expires, the instruction stream dispatcher switches contexts, thereby selecting another instruction stream and outputs the other instruction stream for execution. When a portion of the dispatched commands from the first instruction stream remain in a shared command queue that outputs the commands to each of the processing engines, commands from a second instruction stream cannot be executed until the dispatched commands for the first instruction stream are output to a processing engine for execution.
Commands in the shared queue have been dispatched for execution and are “in-flight” for output to one of the processing engines. When the in-flight commands from a particular instruction stream cannot be output from the queue, subsequent commands are blocked and cannot be output from the queue or dispatched. Therefore, some processing engines may be idle while other processing engines are overwhelmed, limiting processing concurrency and instruction stream throughput.
Accordingly, there is a need to minimize the number of in-flight commands to achieve greater processing concurrency and improve overall instruction stream throughput.